<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>005-ES6-变量解构赋值</title>
</head>
<body>
    <script>
        // 说白了，解构赋值就是用变量去接收引用数据类型对应位置的值

        // 先看看在数组上面的用法

        // 先看一个简单的案例
        let arr = [1,2,3];
        let [a,b,c] = arr;//注意这一步其实就是声明了a,b,c三个变量，然后赋值为1,2,3
        console.log(a,b,c);//1 2 3

        // 下面我们看一个经典的题目，如何交换两个变量的值
        let num11 = 1;
        let num12 = 2;
        // 你是不是想像刚学编程时候那样搞个第三个变量做中介？现在不用了，我们可以直接这样
        [num11,num12] = [num12,num11];
        console.log(num11,num12);//2 1，是不是很炫酷?

        // 现在我们再搞点炫酷的，还是有个数组,现在我只想要他的第三个值，怎么做？
        let [,,num3] = [1,2,3];//很简单，直接空的再逗号即可
        console.log(num3);

        // 如果数组里有嵌套，我想拿到嵌套里的值呢?
        let [a41,[a42],a43] = [1,[2,3,4],5];//这样就拿到了嵌套的数组里的第一个值
        console.log(a41,a42,a43);

        // 现在问题来了，如果说未来我们解构赋值已经写好了，但是我们拿到的数组是个空的，这不就出问题了么，不用慌，解构赋值里的变量是可以赋初始值的
        let [a51=1] = [];//像这样写，就是解构赋值找不到匹配项就默认为1
        console.log(a51);
    </script>
</body>
</html>